package com.qf.hsr.service.impl;

import com.qf.hsr.dao.IUserDao;
import com.qf.hsr.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;

/**
 * @author q
 * @version V1.0
 * @date 2021/11/08
 **/
@Service("userService")
public class UserServiceImpl implements IUserService {
    /**
     * @Autowired:根据类型自动注入
     *      1.如果当前类型在容器的组件有且只有一个，直接注入
     *      2.如果当前类型在容器的组件有多个呢？
     *          会把属性当作beanName去匹配，匹配到直接注入。匹配不到，则出错
     *
     */
    //@Autowired
    /**
     * @Resource：根据beanName自动注入
     *      这个不是Spring的注解，但是可以完成属性赋值相关的操作
     *      1.默认beanName就是属性名
     *      2.也可以通过name属性显示的指定要注入的beanName
     *
     * @Qualifier：在自动注入的基础之上只负责指定beanName
     */
    //@Resource(name = "userDao2")

    //@Autowired
    //@Qualifier("userDaoImpl")
    @Autowired
    private IUserDao userDao;

    public void setUserDao(IUserDao userDao) {
        this.userDao = userDao;
    }

    public UserServiceImpl() {
        System.out.println("UserServiceImpl 通过无参构造创建了...");
    }

    public void init(){
        System.out.println("UserServiceImpl init 执行了...");
    }

    public void destroy(){
        System.out.println("UserServiceImpl destroy 执行了...");
    }

    @Override
    public void save() {
        System.out.println("UserServiceImpl save 执行了...");
        userDao.save();
    }

    @Bean("deleteUserId")
    @Override
    public int delete() {
        System.out.println("UserServiceImpl delete 执行了...");
        return 1;
    }
}
